<?xml version="1.0" encoding="utf-8"?>
<!-- <!DOCTYPE scene[
  <!ELEMENT scene ANY>
    <!ATTLIST scene windowWidth CDATA #REQUIRED>
    <!ATTLIST scene windowHeight CDATA #REQUIRED>
  <!ELEMENT camera EMPTY>
    <!ATTLIST camera ratio CDATA #REQUIRED>
    <!ATTLIST camera fov CDATA #REQUIRED>
    <!ATTLIST camera near CDATA #REQUIRED>
    <!ATTLIST camera far CDATA #REQUIRED>
  <!ELEMENT lookAt (position, at, up)>
    <!ELEMENT position EMPTY>
      <!ATTLIST position x CDATA #REQUIRED>
      <!ATTLIST position y CDATA #REQUIRED>
      <!ATTLIST position z CDATA #REQUIRED>
    <!ELEMENT at EMPTY>
      <!ATTLIST at x CDATA #REQUIRED>
      <!ATTLIST at y CDATA #REQUIRED>
      <!ATTLIST at z CDATA #REQUIRED>
    <!ELEMENT up EMPTY>
      <!ATTLIST up x CDATA #REQUIRED>
      <!ATTLIST up y CDATA #REQUIRED>
      <!ATTLIST up z CDATA #REQUIRED>
  <!ELEMENT applicationTime EMPTY>
  <!ELEMENT bezier3Curve (controllerPoint+)>
    <!ELEMENT controllerPoint EMPTY>
      <!ATTLIST controllerPoint x CDATA #REQUIRED>
      <!ATTLIST controllerPoint y CDATA #REQUIRED>
      <!ATTLIST controllerPoint z CDATA #REQUIRED>
  <!ELEMENT bezierPath (path+)>
    <!ELEMENT path (controllerPointPath+)>
      <!ELEMENT controllerPointPath EMPTY>
        <!ATTLIST controllerPointPath x CDATA #REQUIRED>
        <!ATTLIST controllerPointPath y CDATA #REQUIRED>
        <!ATTLIST controllerPointPath z CDATA #REQUIRED>
        <!ATTLIST controllerPointPath t CDATA #REQUIRED>
]>
  -->
<scene windowWidth="720" windowHeight="405">
  <applicationTime/>
  <!--camera position-->
  <keyframe name="cameraX" easyinout="true">
    <step position="0" time="0"/>
    <step position="0" time="3"/>
    <step position="-10" time="8.5"/>
    <step position="-10" time="12.5"/>
    <step position="-40" time="16"/>
    <step position="-40" time="20"/>
    <step position="20" time="23"/>
    <step position="20" time="27"/>
    <step position="-20" time="30"/>
  </keyframe>
  <keyframe name="cameraY" easyinout="true">
    <step position="10" time="0"/>
    <step position="10" time="3"/>
    <step position="60" time="8.5"/>
    <step position="60" time="12.5"/>
    <step position="60" time="16"/>
    <step position="60" time="20"/>
    <step position="20" time="23"/>
    <step position="20" time="27"/>
    <step position="50" time="30"/>
  </keyframe>
  <keyframe name="cameraZ" easyinout="true">
    <step position="50" time="0"/>
    <step position="50" time="3"/>
    <step position="-60" time="8.5"/>
    <step position="-60" time="12.5"/>
    <step position="-60" time="16"/>
    <step position="-60" time="20"/>
    <step position="30" time="23"/>
    <step position="30" time="27"/>
    <step position="60" time="30"/>
  </keyframe>
  <putInVector3 name="cameraPosition">
    <x connectFrom="cameraX" value="0"/>
    <y connectFrom="cameraY" value="5"/>
    <z connectFrom="cameraZ" value="0"/>
  </putInVector3>
  <!--end camera position-->

  <!--camera at-->
  <keyframe name="atX" easyinout="true">
    <step position="0" time="0"/>
    <step position="0" time="4"/>
    <step position="-10" time="8.5"/>
    <step position="-10" time="12.5"/>
    <step position="30" time="16"/>
    <step position="30" time="20"/>
    <step position="0" time="23"/>
    <step position="0" time="27"/>
  </keyframe>
  <keyframe name="atY" easyinout="true">
    <step position="10" time="0"/>
    <step position="10" time="4"/>
    <step position="5" time="8.5"/>
    <step position="5" time="12.5"/>
    <step position="40" time="16"/>
    <step position="40" time="20"/>
    <step position="20" time="23"/>
    <step position="20" time="27"/>
    <step position="30" time="30"/>
  </keyframe>
  <keyframe name="atZ" easyinout="true">
    <step position="0" time="0"/>
    <step position="0" time="4"/>
    <step position="30" time="8.5"/>
    <step position="30" time="12.5"/>
    <step position="-60" time="16"/>
    <step position="-60" time="20"/>
    <step position="-10" time="23"/>
    <step position="-10" time="27"/>
  </keyframe>
  <putInVector3 name="cameraAt">
    <x connectFrom="atX" value="0"/>
    <y connectFrom="atY" value="5"/>
    <z connectFrom="atZ" value="0"/>
  </putInVector3>
  <!--end camera at-->
  
  <camera ratio="16/9" fov="45" near="1" far="1000"/>
  <lookAt>
    <position connectFrom="cameraPosition" x="0" y="5" z="50"/>
    <at connectFrom="cameraAt" x="-10" y="40" z="-30"/>

    <!--<position connectFrom="0" x="0" y="5" z="50"/>
    <at connectFrom="0" x="0" y="10" z="0"/>-->

    <up connectFrom="0" x="0" y="1" z="0"/>
  </lookAt>

  <!--terrain-->
  <separator>
    <material>
      <ambient r="1" g="1" b="1"/>
      <diffuse r="0" g="0" b="0"/>
      <specular r="0" g="0" b="0"/>
      <shininess>0</shininess>
    </material>
    <terrain size="1000"/>
  </separator>

  
  <!--wall-->
  <separator>
    <rotate axis="x">
      <angle connectFrom="0">90</angle>
    </rotate>
    <translate connectFrom="0" x="0" y="-120" z="0"/>
    <material>
      <ambient r="0" g="0" b="0"/>
      <diffuse r="0" g="0" b="0"/>
      <specular r="0" g="0" b="0"/>
      <shininess>0</shininess>
    </material>
    <terrain size="200"/>
  </separator>
  <separator>
    <rotate axis="x">
      <angle connectFrom="0">90</angle>
    </rotate>
    <rotate axis="z">
      <angle connectFrom="0">90</angle>
    </rotate>
    <translate connectFrom="0" x="0" y="-100" z="0"/>
    <material>
      <ambient r="0" g="0" b="0"/>
      <diffuse r="0" g="0" b="0"/>
      <specular r="0" g="0" b="0"/>
      <shininess>0</shininess>
    </material>
    <terrain size="250"/>
  </separator>
  <separator>
    <rotate axis="x">
      <angle connectFrom="0">90</angle>
    </rotate>
    <rotate axis="z">
      <angle connectFrom="0">90</angle>
    </rotate>
    <translate connectFrom="0" x="0" y="100" z="0"/>
    <material>
      <ambient r="0" g="0" b="0"/>
      <diffuse r="0" g="0" b="0"/>
      <specular r="0" g="0" b="0"/>
      <shininess>0</shininess>
    </material>
    <terrain size="250"/>
  </separator>
  <separator>
    <rotate axis="x">
      <angle connectFrom="0">90</angle>
    </rotate>
    <translate connectFrom="0" x="0" y="80" z="0"/>
    <material>
      <ambient r="0" g="0" b="0"/>
      <diffuse r="0" g="0" b="0"/>
      <specular r="0" g="0" b="0"/>
      <shininess>0</shininess>
    </material>
    <terrain size="200"/>
  </separator>
 
  
  <!--translate everything above the terrain-->
  <translate connectFrom="0" x="0" y="10" z="0"/>
  

  <!--greatWheel-->
  <separator>
    <translate connectFrom="0" x="0" y="12" z="-10"/>
    
    <linearFunction name="rotationWheel"  coeff="15" offset="0" time="0"/>
    <linearFunction name="rotationBooth"  coeff="-15" offset="0" time="0"/>

    <material>
      <ambient r="0" g="0" b="0"/>
      <diffuse r="0" g="0" b="1"/>
      <specular r="0" g="0" b="1"/>
      <shininess>128</shininess>
    </material>

    <greatWheel>
      <size>1</size>
      <rotationBooth connectFrom="rotationBooth"/>
      <rotationWheel connectFrom="rotationWheel"/>
    </greatWheel>
  </separator>
  
  <!--roller coaster rail-->
  <separator>
    <material>
      <ambient r="0" g="0" b="0"/>
      <diffuse r="0" g="1" b="0"/>
      <specular r="0" g="1" b="0"/>
      <shininess>60</shininess>
    </material>
    <bezierCoordinates type="rail2" numberOfElementPerPath="40">
      <path>
        <controllerPoint x="-20" y="20" z="5"/>
        <controllerPoint x="-10" y="-10" z="5"/>
        <controllerPoint x="10" y="0" z="5"/>
        <controllerPoint x="20" y="0" z="5"/>
      </path>
      <path>
        <controllerPoint x="20" y="0" z="5"/>
        <controllerPoint x="30" y="0" z="5"/>
        <controllerPoint x="40" y="0" z="-5"/>
        <controllerPoint x="40" y="10" z="-10"/>
      </path>
      <path>
        <controllerPoint x="40" y="10" z="-10"/>
        <controllerPoint x="40" y="20" z="-15"/>
        <controllerPoint x="30" y="30" z="-25"/>
        <controllerPoint x="20" y="40" z="-25"/>
      </path>
      <path>
        <controllerPoint x="20" y="40" z="-25"/>
        <controllerPoint x="10" y="50" z="-25"/>
        <controllerPoint x="0" y="0" z="-25"/>
        <controllerPoint x="-10" y="5" z="-25"/>
      </path>
      <path>
        <controllerPoint x="-10" y="5" z="-25"/>
        <controllerPoint x="-20" y="10" z="-25"/>
        <controllerPoint x="-20" y="40" z="-30"/>
        <controllerPoint x="-10" y="40" z="-30"/>
      </path>
      <path>
        <controllerPoint x="-10" y="40" z="-30"/>
        <controllerPoint x="0" y="40" z="-35"/>
        <controllerPoint x="0" y="10" z="-40"/>
        <controllerPoint x="-10" y="10" z="-40"/>
      </path>
      <path>
        <controllerPoint x="-10" y="10" z="-40"/>
        <controllerPoint x="-20" y="10" z="-40"/>
        <controllerPoint x="-30" y="20" z="-30"/>
        <controllerPoint x="-40" y="30" z="-20"/>
      </path>
      <path>
        <controllerPoint x="-40" y="30" z="-20"/>
        <controllerPoint x="-50" y="40" z="-10"/>
        <controllerPoint x="-30" y="40" z="-0"/>
        <controllerPoint x="-20" y="20" z="5"/>
      </path>
    </bezierCoordinates>
  </separator>
  

  <!--roller coaster-->
  <separator>
    <bezierPath loop="true">
      <path>
        <controllerPointPath x="-20" y="20" z="5" t="0"/>
        <controllerPointPath x="-10" y="-10" z="5" t="0.5"/>
        <controllerPointPath x="10" y="0" z="5" t="1"/>
        <controllerPointPath x="20" y="0" z="5" t="1.5"/>
      </path>
      <path>
        <controllerPointPath x="20" y="0" z="5" t="1.5"/>
        <controllerPointPath x="30" y="0" z="5" t="2"/>
        <controllerPointPath x="40" y="0" z="-5" t="2.5"/>
        <controllerPointPath x="40" y="10" z="-10" t="3"/>
      </path>
      <path>
        <controllerPointPath x="40" y="10" z="-10" t="3"/>
        <controllerPointPath x="40" y="20" z="-15" t="3.5"/>
        <controllerPointPath x="30" y="30" z="-25" t="5"/>
        <controllerPointPath x="20" y="40" z="-25" t="8"/>
      </path>
      <path>
        <controllerPointPath x="20" y="40" z="-25" t="8"/>
        <controllerPointPath x="10" y="50" z="-25" t="9"/>
        <controllerPointPath x="0" y="0" z="-25" t="9.5"/>
        <controllerPointPath x="-10" y="5" z="-25" t="10"/>
      </path>
      <path>
        <controllerPointPath x="-10" y="5" z="-25" t="10"/>
        <controllerPointPath x="-20" y="10" z="-25" t="10.5"/>
        <controllerPointPath x="-20" y="40" z="-30" t="11"/>
        <controllerPointPath x="-10" y="40" z="-30" t="11.5"/>
      </path>
      <path>
        <controllerPointPath x="-10" y="40" z="-30" t="11.5"/>
        <controllerPointPath x="0" y="40" z="-35" t="12"/>
        <controllerPointPath x="0" y="10" z="-40" t="12.5"/>
        <controllerPointPath x="-10" y="10" z="-40" t="13"/>
      </path>
      <path>
        <controllerPointPath x="-10" y="10" z="-40" t="13"/>
        <controllerPointPath x="-20" y="10" z="-40" t="13.5"/>
        <controllerPointPath x="-30" y="20" z="-30" t="14"/>
        <controllerPointPath x="-40" y="30" z="-20" t="15"/>
      </path>
      <path>
        <controllerPointPath x="-40" y="30" z="-20" t="15"/>
        <controllerPointPath x="-50" y="40" z="-10" t="16"/>
        <controllerPointPath x="-30" y="40" z="-0" t="17"/>
        <controllerPointPath x="-20" y="20" z="5" t="18"/>
      </path>
    </bezierPath>
    
    <translate connectFrom="0" x="0" y="2.5" z="0"/>
    <cube>
      <size connectFrom="0">3</size>
    </cube>
    <translate connectFrom="0" x="-4" y="0" z="0"/>
    <cube>
      <size connectFrom="0">2</size>
    </cube>
    <translate connectFrom="0" x="8" y="0" z="0"/>
    <cube>
      <size connectFrom="0">2</size>
    </cube>
    <translate connectFrom="0" x="-4" y="4" z="0"/>
    <cube>
      <size connectFrom="0">2</size>
    </cube>
  </separator>
  
  
  <!--snow-->
  <separator>
    <material>
      <ambient r="236" g="219" b="50"/>
      <diffuse r="236" g="219" b="50"/>
      <specular r="236" g="219" b="50"/>
      <shininess>60</shininess>
    </material>
    <translate connectFrom="0" x="10" y="70" z="-15"/>
    <particleSystem numberOfParticle="200000" eulerStep="0.01" time="0">
      <emitter type="fullSquareEmitter" numberOfParticleToEmit="20">
        <velocity connectFrom="0" x="0" y="0" z="0"/>
        <position connectFrom="0" x="-10" y="0" z="0"/>
        <size connectFrom="0">150</size>
      </emitter>
      <simulation type="attractionSimulation"/>
      <reaper type="timeReaper">
        <lifeSpan>9</lifeSpan>
      </reaper>
      <display type="particlesPoint">
        <size>2</size>
      </display>
    </particleSystem>
  </separator>
  
  
  <!--right canon-->
  <separator>
    <separator>
      <translate connectFrom="0" x="20" y="-10" z="20"/>
      <rotate axis="x">
        <angle connectFrom="0">90</angle>
      </rotate>
      <rotate axis="y">
        <angle connectFrom="0">180</angle>
      </rotate>
      <material>
        <ambient r="0" g="0" b="0"/>
        <diffuse r="1" g="0" b="0"/>
        <specular r="1" g="0" b="0"/>
        <shininess>128</shininess>
      </material>
      <canon connectFrom="0" angle="45"/>
    </separator>
    <timeController name="kineticRight1" startTime="0" endTime="-1"/>
    <timeController name="kineticRight2" startTime="2" endTime="-1"/>
    <timeController name="kineticRight3" startTime="4" endTime="-1"/>
    <timeController name="kineticRight4" startTime="6" endTime="-1"/>
    <separator>
      <kinetic>
        <position x="17.5" y="-8" z="19"/>
        <velocity x="-10" y="10" z="0"/>
        <mass>80</mass>
        <time connectFrom="kineticRight1"></time>
      </kinetic>
      <cube>
        <size connectFrom="0">0.5</size>
      </cube>
    </separator>
    <separator>
      <kinetic>
        <position x="17.5" y="-8" z="19"/>
        <velocity x="-10" y="10" z="0"/>
        <mass>80</mass>
        <time connectFrom="kineticRight2"></time>
      </kinetic>
      <cube>
        <size connectFrom="0">0.5</size>
      </cube>
    </separator>
    <separator>
      <kinetic>
        <position x="17.5" y="-8" z="19"/>
        <velocity x="-10" y="10" z="0"/>
        <mass>80</mass>
        <time connectFrom="kineticRight3"></time>
      </kinetic>
      <cube>
        <size connectFrom="0">0.5</size>
      </cube>
    </separator>
    <separator>
      <kinetic>
        <position x="17.5" y="-8" z="19"/>
        <velocity x="-10" y="10" z="0"/>
        <mass>80</mass>
        <time connectFrom="kineticRight4"></time>
      </kinetic>
      <cube>
        <size connectFrom="0">0.5</size>
      </cube>
    </separator>
  </separator>
  
  <!--left canon-->
  <separator>
    <separator>
      <translate connectFrom="0" x="-20" y="-10" z="20"/>
      <rotate axis="x">
        <angle connectFrom="0">90</angle>
      </rotate>
      <rotate axis="y">
        <angle connectFrom="0">180</angle>
      </rotate>
      <rotate axis="z">
        <angle connectFrom="0">180</angle>
      </rotate>
      <material>
        <ambient r="0" g="0" b="0"/>
        <diffuse r="1" g="0" b="0"/>
        <specular r="1" g="0" b="0"/>
        <shininess>128</shininess>
      </material>
      <canon connectFrom="0" angle="45"/>
    </separator>
    <timeController name="kineticLeft1" startTime="1" endTime="-1"/>
    <timeController name="kineticLeft2" startTime="3" endTime="-1"/>
    <timeController name="kineticLeft3" startTime="5" endTime="-1"/>
    <timeController name="kineticLeft4" startTime="7" endTime="-1"/>
    <separator>
      <kinetic>
        <position x="-17.5" y="-8" z="21"/>
        <velocity x="10" y="10" z="0"/>
        <mass>80</mass>
        <time connectFrom="kineticLeft1"></time>
      </kinetic>
      <cube>
        <size connectFrom="0">0.5</size>
      </cube>
    </separator>
    <separator>
      <kinetic>
        <position x="-17.5" y="-8" z="21"/>
        <velocity x="10" y="10" z="0"/>
        <mass>80</mass>
        <time connectFrom="kineticLeft2"></time>
      </kinetic>
      <cube>
        <size connectFrom="0">0.5</size>
      </cube>
    </separator>
    <separator>
      <kinetic>
        <position x="-17.5" y="-8" z="21"/>
        <velocity x="10" y="10" z="0"/>
        <mass>80</mass>
        <time connectFrom="kineticLeft3"></time>
      </kinetic>
      <cube>
        <size connectFrom="0">0.5</size>
      </cube>
    </separator>
    <separator>
      <kinetic>
        <position x="-17.5" y="-8" z="21"/>
        <velocity x="10" y="10" z="0"/>
        <mass>80</mass>
        <time connectFrom="kineticLeft4"></time>
      </kinetic>
      <cube>
        <size connectFrom="0">0.5</size>
      </cube>
    </separator>
  </separator>
  
  <!--awesome attraction-->
  <separator>
    <material>
      <ambient r="0" g="0" b="0"/>
      <diffuse r="1" g="0" b="0"/>
      <specular r="1" g="0" b="0"/>
      <shininess>128</shininess>
    </material>
    <linearFunction name="rotationAttraction"  coeff="40" offset="0" time="0"/>
    <translate connectFrom="0" x="50" y="-10" z="-50"/>
    <awesomeAttraction size="3">
      <rotationPillar connectFrom="rotationAttraction">0</rotationPillar>
      <rotationArm connectFrom="rotationAttraction">0</rotationArm>
      <rotationBooth connectFrom="rotationAttraction">0</rotationBooth>
    </awesomeAttraction>
  </separator>
  
</scene>
